#ifndef DISPATCH_H
#define DISPATCH_H

#include <QObject>
class QFileSystemWatcher;

class Dispatch : public QObject
{
    Q_OBJECT
public:
    explicit Dispatch(QObject *parent = 0);

signals:
    void fileRemoved(const QString &file);
    void fileRenamed(const QString &oldName, const QString &newName);

public slots:
    void dispatchFile(const QString &file);
    void fileAdded(const QString &file);
    void filesAdded(const QStringList &files);

    void onFileRemoved(const QString &file);
    void onFileRenamed(const QString &oldName, const QString &newName);

private slots:
    void startDispatch();
    void loadSuffixFile(const QString &file);

private:
    void prependParse(const QString &file);
    void appendParse(const QString &file);
    void prependVerify(const QString &file);
    void appendVerify(const QString &file);
    QString suffixOf(const QString &file);
    bool isUidFileName(const QString &file);

    QStringList m_passSuffix;
    QStringList m_denySuffix;

    QStringList m_files;

    QFileSystemWatcher *watcher;
};

#endif // DISPATCH_H
